<html>
<head><meta charset="utf-8"><title>2021-02-08 Meeting. · project-portable-simd · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/index.html">project-portable-simd</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html">2021-02-08 Meeting.</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="225585406"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225585406" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225585406">(Feb 08 2021 at 18:16)</a>:</h4>
<p>Hello everyone, meeting in... 3 hours and 15 minutes? "wow this is opening this thread early" yes, I want to check if anyone is actually going to show up. ^^; So, hi! <span aria-label="wave" class="emoji emoji-1f44b" role="img" title="wave">:wave:</span></p>



<a name="225588620"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225588620" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225588620">(Feb 08 2021 at 18:39)</a>:</h4>
<p>Hi! Big news in CrabLand <a href="https://foundation.rust-lang.org/">https://foundation.rust-lang.org/</a></p>



<a name="225588656"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225588656" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225588656">(Feb 08 2021 at 18:39)</a>:</h4>
<p>Not sure what it means though - (Jane helped me get started with Rust and connect to this project so a million thanks to her)</p>



<a name="225589258"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225589258" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225589258">(Feb 08 2021 at 18:45)</a>:</h4>
<p>yeah I have no idea.</p>



<a name="225607966"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225607966" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225607966">(Feb 08 2021 at 21:03)</a>:</h4>
<p>New member here, is there an audio channel for the meeting?</p>



<a name="225608023"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225608023" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Thom Chiovoloni <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225608023">(Feb 08 2021 at 21:03)</a>:</h4>
<p>Yeah, are we doing it? I'm here for once</p>



<a name="225608096"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225608096" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225608096">(Feb 08 2021 at 21:04)</a>:</h4>
<p>Nope, we just meet here in zulip</p>



<a name="225608351"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225608351" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225608351">(Feb 08 2021 at 21:06)</a>:</h4>
<p>Got it. <br>
What's the best place to go to see the agenda or past agendas?</p>



<a name="225608574"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225608574" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225608574">(Feb 08 2021 at 21:08)</a>:</h4>
<p>We haven't been doing a great job of tracking minutes, but all of the previous meetings are here in zulip.</p>



<a name="225608618"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225608618" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225608618">(Feb 08 2021 at 21:08)</a>:</h4>
<p>I don't know if we have anything specific on today's agenda, but we have a few open PRs and a closed PR to discuss</p>



<a name="225608645"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225608645" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225608645">(Feb 08 2021 at 21:09)</a>:</h4>
<p>Great!</p>



<a name="225608675"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225608675" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oliver <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225608675">(Feb 08 2021 at 21:09)</a>:</h4>
<p><a href="https://hackmd.io/vtoVeGpQTeSeUH1HaOpRCw">https://hackmd.io/vtoVeGpQTeSeUH1HaOpRCw</a><br>
<a href="https://hackmd.io/P8lA-Lk-SvO0wUH1mmZyPw">https://hackmd.io/P8lA-Lk-SvO0wUH1mmZyPw</a><br>
<a href="https://hackmd.io/PYi0ZMVdRF64J0we5Z4Ucw">https://hackmd.io/PYi0ZMVdRF64J0we5Z4Ucw</a><br>
<a href="https://hackmd.io/h5Coi4l8RZWS6T1Esw5WKQ">https://hackmd.io/h5Coi4l8RZWS6T1Esw5WKQ</a><br>
<a href="https://hackmd.io/koVzlGQ0QsWqn1iwLf-Wyg">https://hackmd.io/koVzlGQ0QsWqn1iwLf-Wyg</a><br>
<a href="https://hackmd.io/a2vhyS0ZTtq1e7JkH2kabA">https://hackmd.io/a2vhyS0ZTtq1e7JkH2kabA</a></p>



<a name="225608806"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225608806" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oliver <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225608806">(Feb 08 2021 at 21:10)</a>:</h4>
<p>I think there have lately not been minutes kept other than what's communicated here on Zulip</p>



<a name="225608860"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225608860" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oliver <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225608860">(Feb 08 2021 at 21:11)</a>:</h4>
<p><a href="https://rust-lang.github.io/rfcs/1199-simd-infrastructure.html">https://rust-lang.github.io/rfcs/1199-simd-infrastructure.html</a></p>



<a name="225608970"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225608970" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oliver <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225608970">(Feb 08 2021 at 21:12)</a>:</h4>
<p><a href="https://rust-lang.github.io/rfcs/2977-stdsimd.html">https://rust-lang.github.io/rfcs/2977-stdsimd.html</a></p>



<a name="225609003"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225609003" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oliver <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225609003">(Feb 08 2021 at 21:12)</a>:</h4>
<p><a href="https://rust-lang.github.io/rfcs/2574-simd-ffi.html">https://rust-lang.github.io/rfcs/2574-simd-ffi.html</a></p>



<a name="225609053"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225609053" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225609053">(Feb 08 2021 at 21:13)</a>:</h4>
<p><a href="https://hackmd.io/SOHrC2_dRc2sPdwBliTbFw?both">https://hackmd.io/SOHrC2_dRc2sPdwBliTbFw?both</a> Pow! An agenda</p>



<a name="225609183"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225609183" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225609183">(Feb 08 2021 at 21:14)</a>:</h4>
<p>re PRs, on stdsimd or the RFC?</p>



<a name="225609206"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225609206" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225609206">(Feb 08 2021 at 21:14)</a>:</h4>
<p>Hello is everyone here? I think <span class="user-mention" data-user-id="224471">@Lokathor</span> might be in a docs meeting still? Wave hi! <span aria-label="wave" class="emoji emoji-1f44b" role="img" title="wave">:wave:</span></p>



<a name="225609271"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225609271" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225609271">(Feb 08 2021 at 21:15)</a>:</h4>
<p><span class="user-mention" data-user-id="388128">@Edmund Cape</span> on stdsimd, as well as a recently closed one on rustc</p>



<a name="225609279"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225609279" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225609279">(Feb 08 2021 at 21:15)</a>:</h4>
<p>Great minutes! Straight to the point :)<br>
(I was referring to the agenda from <span class="user-mention" data-user-id="281757">@Jubilee</span> )</p>



<a name="225609504"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225609504" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225609504">(Feb 08 2021 at 21:16)</a>:</h4>
<p>Hello Edmund! Oliver! Thom! Caleb! Wow, yes, actually lots of people.<br>
The RFCs are mostly useful background data to look at.</p>
<p>So is this still a good time for people? It kind of looks like the answer is yes?</p>



<a name="225610052"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225610052" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225610052">(Feb 08 2021 at 21:21)</a>:</h4>
<p>I think we should maybe still possibly pop a new scheduling calendar thing to make sure we aren't leaving anyone out or if there's better times, but it looks like we're good enough so unless something comes up as a better alternative we can probably stay the course.</p>



<a name="225610078"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225610078" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225610078">(Feb 08 2021 at 21:21)</a>:</h4>
<p>re: branching<br>
We made a more-or-less decision a while back to omit panicking in debug mode for math and make the default addition also be equivalent to wrapping_add, do we want to make it a policy to write code in a way that minimizes branching unless it's already code involving masking?</p>



<a name="225610320"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225610320" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225610320">(Feb 08 2021 at 21:23)</a>:</h4>
<p>Even if it involves masking, it can still be written branchless.  I think the policy should be more about if it makes sense to do without branching.  e.g. division by 0 <em>could</em> be handled branchless with masking, but I don't think it makes sense to do that</p>



<a name="225610542"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225610542" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225610542">(Feb 08 2021 at 21:24)</a>:</h4>
<p>Right.</p>
<p>I should also note though that a lot of simple <code>if else</code> cases get optimized out. I suppose we can't always rely on that, though.</p>



<a name="225610618"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225610618" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225610618">(Feb 08 2021 at 21:25)</a>:</h4>
<p>Yeah.  I think more specifically we should avoid branch-panics if there is an alternative version of the function that doesn't have one.</p>



<a name="225610755"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225610755" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225610755">(Feb 08 2021 at 21:26)</a>:</h4>
<p>I agree that wherever possible be explicit about not branching in the code as opposed to relying on the optimizer. If only to clarify intent.</p>



<a name="225611037"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225611037" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225611037">(Feb 08 2021 at 21:28)</a>:</h4>
<p>Panicking <strong>is</strong> kind of a game-over, whereas a lot of the time during SIMD code you may just discard or zero out results that don't fall within accepted parameters.</p>



<a name="225611281"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225611281" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225611281">(Feb 08 2021 at 21:30)</a>:</h4>
<p>I guess that makes a question of whether panicking on dividing by zero <strong>does</strong> make sense. :V<br>
With that in mind, what is the counterargument? I guess that we don't have a good way to do that in integer SIMD math, whereas in floats we could just pass on an infinity.</p>



<a name="225611524"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225611524" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225611524">(Feb 08 2021 at 21:32)</a>:</h4>
<p>In integer math you could use a poison value that you pass on, but I think that should probably be up to the user to implement</p>



<a name="225611573"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225611573" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225611573">(Feb 08 2021 at 21:33)</a>:</h4>
<p>Yeaaah.<br>
I suppose that answers it for me. ^^;<br>
SHUFFLES! <a href="https://github.com/rust-lang/stdsimd/pull/62">https://github.com/rust-lang/stdsimd/pull/62</a><br>
I documented the only question that came up so we can probably merge this?</p>



<a name="225611613"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225611613" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225611613">(Feb 08 2021 at 21:33)</a>:</h4>
<p><span class="user-mention" data-user-id="281757">@Jubilee</span> I had important, "watching Stargate" business &gt;_&gt;</p>



<a name="225611660"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225611660" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225611660">(Feb 08 2021 at 21:33)</a>:</h4>
<p>StarGate is <em>very</em> important.</p>



<a name="225611668"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225611668" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225611668">(Feb 08 2021 at 21:33)</a>:</h4>
<p>Yeah I think it's ready to merge.</p>



<a name="225611765"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225611765" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225611765">(Feb 08 2021 at 21:34)</a>:</h4>
<p>Please feel free to "offline" my questions if they are off-course/not useful.  Quick question...</p>



<a name="225611857"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225611857" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225611857">(Feb 08 2021 at 21:35)</a>:</h4>
<p>I think the next step I would like to have is non-parameterized shuffles since those can be immediately used without full const generics (and stabilized, wishful thinking)</p>



<a name="225611905"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225611905" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225611905">(Feb 08 2021 at 21:35)</a>:</h4>
<p><span class="user-mention" data-user-id="388128">@Edmund Cape</span> this is probably a good forum for general questions (and can always get split out to other zulip threads!)</p>



<a name="225611931"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225611931" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225611931">(Feb 08 2021 at 21:35)</a>:</h4>
<p>Is the package expected to deal with divide by zero errors? When I look at the Intel intrinsics, id does not seem to UB when divide by zero. It just reports zero.</p>



<a name="225612036"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225612036" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225612036">(Feb 08 2021 at 21:36)</a>:</h4>
<p>if we can just accept division by zero to do some predictable non-panic thing we should</p>



<a name="225612080"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225612080" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225612080">(Feb 08 2021 at 21:36)</a>:</h4>
<p>The return description for divide by zero is different than sending unaligned mem when expecting aligned... example contrast.</p>



<a name="225612119"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225612119" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225612119">(Feb 08 2021 at 21:37)</a>:</h4>
<p>Exactly what the machine does is not necessarily what we want to expose to users, especially because we then have to address Arm, RISCV, Power, etc.</p>



<a name="225612235"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225612235" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225612235">(Feb 08 2021 at 21:38)</a>:</h4>
<p>right, if we can make a <em>general</em> claim we should. And maybe we should say "division by 0 produces 0, though if the hardware won't do that we will do that for you and you won't like the performance there"</p>



<a name="225612363"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225612363" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225612363">(Feb 08 2021 at 21:38)</a>:</h4>
<p>Does anyone have a view of what ARM does with divide by zero?</p>



<a name="225612373"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225612373" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225612373">(Feb 08 2021 at 21:38)</a>:</h4>
<p>So we're not trying to write the x86 SIMD API, we're trying to write a portable one.<br>
Indeed they will not.</p>



<a name="225612405"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225612405" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225612405">(Feb 08 2021 at 21:39)</a>:</h4>
<p>I would not be surprised if Arm does not even expose a SIMD div. Let me check.</p>



<a name="225612454"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225612454" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225612454">(Feb 08 2021 at 21:39)</a>:</h4>
<p><span class="user-mention" data-user-id="388128">@Edmund Cape</span> my understanding is that the Intel div intrinsics are not a single instruction, but resolve to a particular sequence of instructions with some particular behavior, but the actual idiv instruction will fail on a divide by zero</p>



<a name="225612481"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225612481" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225612481">(Feb 08 2021 at 21:39)</a>:</h4>
<p>poop</p>



<a name="225612509"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225612509" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225612509">(Feb 08 2021 at 21:39)</a>:</h4>
<p>Yeah, float divs only.</p>



<a name="225612589"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225612589" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225612589">(Feb 08 2021 at 21:40)</a>:</h4>
<p>I don't believe intel actually provides a SIMD div, either.  It's just idiv used sequentially over the vector, I think</p>



<a name="225612684"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225612684" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225612684">(Feb 08 2021 at 21:41)</a>:</h4>
<p>We basically just expose a div function not because it's fast but because, as Lokathor mentioned many meetings back, "if you need to divide, you need to divide."</p>



<a name="225612699"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225612699" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225612699">(Feb 08 2021 at 21:41)</a>:</h4>
<p>We could provide an implementation that does something similar, if we can agree on a behavior and API</p>



<a name="225612827"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225612827" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225612827">(Feb 08 2021 at 21:42)</a>:</h4>
<p>non parameterized shuffles, <span class="user-mention" data-user-id="312331">@Caleb Zulawski</span>?</p>



<a name="225612857"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225612857" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225612857">(Feb 08 2021 at 21:42)</a>:</h4>
<p>do you mean with dynamic indices instead of const ones?</p>



<a name="225612940"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225612940" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225612940">(Feb 08 2021 at 21:43)</a>:</h4>
<p>No, I mean particular static shuffles that are typically fast on most or some hardware.  Reverse, interleave, things like that</p>



<a name="225613003"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225613003" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225613003">(Feb 08 2021 at 21:43)</a>:</h4>
<p>Ah! yeah.</p>



<a name="225613019"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225613019" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225613019">(Feb 08 2021 at 21:43)</a>:</h4>
<p>Just wrappers around the <code>shuffle</code> fn you wrote, but no const generics!</p>



<a name="225613042"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225613042" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225613042">(Feb 08 2021 at 21:44)</a>:</h4>
<p>I am not sure if those don't resolve to... yeah, also shufflevector. ^^;</p>



<a name="225613117"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225613117" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225613117">(Feb 08 2021 at 21:44)</a>:</h4>
<p>I think we should just come up with a variety of those that are common and useful</p>



<a name="225613207"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225613207" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225613207">(Feb 08 2021 at 21:45)</a>:</h4>
<p>Mmm, I think we should file an issue and figure out what users want first on that front.</p>



<a name="225613251"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225613251" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225613251">(Feb 08 2021 at 21:45)</a>:</h4>
<p>Masks! <a href="https://github.com/rust-lang/stdsimd/pull/61">https://github.com/rust-lang/stdsimd/pull/61</a><br>
It's mostly getting caught on the finickiness of the Wasm SIMD test code.</p>



<a name="225613369"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225613369" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225613369">(Feb 08 2021 at 21:46)</a>:</h4>
<p>Yeah, I briefly read through your comments.  I'll probably make the changes later today.  Hopefully it's ready to merge after addressing those?</p>



<a name="225613452"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225613452" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225613452">(Feb 08 2021 at 21:47)</a>:</h4>
<p>Only as an FYI re SIMD div - I think it exists.  However, to a point made earlier, <code>Int</code> related.</p>
<div class="codehilite" data-code-language="C"><pre><span></span><code><span class="kr">__m128i</span> <span class="n">_mm_div_epi32</span> <span class="p">(</span><span class="kr">__m128i</span> <span class="n">a</span><span class="p">,</span> <span class="kr">__m128i</span> <span class="n">b</span><span class="p">)</span>
<span class="n">Synopsis</span>
<span class="kr">__m128i</span> <span class="n">_mm_div_eci32</span> <span class="p">(</span><span class="kr">__m128i</span> <span class="n">a</span><span class="p">,</span> <span class="kr">__m128i</span> <span class="n">b</span><span class="p">)</span>
<span class="cp">#include</span> <span class="cpf">&lt;immintrin.h&gt;</span><span class="cp"></span>
<span class="nl">Instruction</span><span class="p">:</span> <span class="n">Sequence</span>
<span class="n">CPUID</span> <span class="nl">Flags</span><span class="p">:</span> <span class="n">SSE</span>
<span class="n">Description</span>
<span class="n">Divide</span> <span class="n">packed</span> <span class="mi">32</span><span class="o">-</span><span class="n">bit</span> <span class="n">integers</span> <span class="n">in</span> <span class="n">a</span> <span class="n">by</span> <span class="n">packed</span> <span class="n">elements</span> <span class="n">in</span> <span class="n">b</span><span class="p">,</span> <span class="n">and</span> <span class="n">store</span> <span class="n">the</span> <span class="n">truncated</span> <span class="n">results</span> <span class="n">in</span> <span class="n">dst</span><span class="p">.</span>
<span class="n">Operation</span>
<span class="n">FOR</span> <span class="nl">j</span> <span class="p">:</span><span class="o">=</span> <span class="mi">0</span> <span class="n">to</span> <span class="mi">3</span>
    <span class="nl">i</span> <span class="p">:</span><span class="o">=</span> <span class="mi">32</span><span class="o">*</span><span class="n">j</span>
    <span class="n">IF</span> <span class="n">b</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">31</span><span class="o">:</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="mi">0</span>
        <span class="cp">#DE</span>
    <span class="n">FI</span>
    <span class="n">dst</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">31</span><span class="o">:</span><span class="n">i</span><span class="p">]</span> <span class="o">:=</span> <span class="n">Truncate32</span><span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">31</span><span class="o">:</span><span class="n">i</span><span class="p">]</span> <span class="o">/</span> <span class="n">b</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">31</span><span class="o">:</span><span class="n">i</span><span class="p">])</span>
<span class="n">ENDFOR</span>
<span class="n">dst</span><span class="p">[</span><span class="nl">MAX</span><span class="p">:</span><span class="mi">128</span><span class="p">]</span> <span class="o">:=</span> <span class="mi">0</span>
</code></pre></div>



<a name="225613458"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225613458" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225613458">(Feb 08 2021 at 21:47)</a>:</h4>
<p>I would like to merge that in and update my proptest branch on that</p>



<a name="225613501"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225613501" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225613501">(Feb 08 2021 at 21:47)</a>:</h4>
<p>Yeah, I think so, most of my comments were "hm, maybe?" thoughts rather than need-to-address except for the wasm tests one.</p>



<a name="225614142"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225614142" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225614142">(Feb 08 2021 at 21:52)</a>:</h4>
<p><span class="user-mention" data-user-id="388128">@Edmund Cape</span> That says "Instruction: Sequence" which is basically an admission that it generates a sequence of instructions, rather than generates a specific assembly instruction. It's not like <code>divps</code> or <code>divpd</code> which are packed divides of floats/doubles in xmm registers.</p>



<a name="225614221"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225614221" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225614221">(Feb 08 2021 at 21:53)</a>:</h4>
<p>Yeah, I believe that intrinsic is part of SVML</p>



<a name="225614536"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225614536" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225614536">(Feb 08 2021 at 21:55)</a>:</h4>
<p>It generates the instructions that use xmm registers for scalar division though which is why it uses "SSE" instructions.</p>



<a name="225614695"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225614695" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225614695">(Feb 08 2021 at 21:56)</a>:</h4>
<p>alright now<br>
the contentious<br>
non-2^N vectors!</p>



<a name="225614765"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225614765" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225614765">(Feb 08 2021 at 21:57)</a>:</h4>
<p>Well, the good news is that the rustc PR is merged, so we've deconflicted from cg_clif</p>



<a name="225614811"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225614811" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225614811">(Feb 08 2021 at 21:57)</a>:</h4>
<p>As disappointing that a monomorpisation error is, it's "okay"</p>



<a name="225614896"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225614896" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225614896">(Feb 08 2021 at 21:58)</a>:</h4>
<p>Much better than the ICEs I experienced <span aria-label="upside down" class="emoji emoji-1f643" role="img" title="upside down">:upside_down:</span></p>



<a name="225615199"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225615199" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225615199">(Feb 08 2021 at 22:00)</a>:</h4>
<p>I'm personally okay with allowing monomorpisation errors rather than using const_evaluatable_checked to catch the error.  I think it would come with all of the problems we are trying to avoid with the bitmasks</p>



<a name="225615471"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225615471" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225615471">(Feb 08 2021 at 22:02)</a>:</h4>
<p>Additionally that would make the entirety of stdsimd stabilization blocked by const_evaluatable_checked.  I know stabilization is a long ways out but I have a feeling we will still be at the finish line first</p>



<a name="225615637"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225615637" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225615637">(Feb 08 2021 at 22:03)</a>:</h4>
<p>(we probably have an easier problem to solve and fewer barriers to stabilization, I think)</p>



<a name="225615831"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225615831" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225615831">(Feb 08 2021 at 22:04)</a>:</h4>
<p>here's the $64,000 question: when can we have this in nightly core?</p>



<a name="225615975"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225615975" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225615975">(Feb 08 2021 at 22:05)</a>:</h4>
<p>I think if we comb through the API to make sure everything is okay, and maybe I finish proptesting to validate it a little better, we may be ready for that?</p>



<a name="225615996"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225615996" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225615996">(Feb 08 2021 at 22:05)</a>:</h4>
<p>excellent</p>



<a name="225616023"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225616023" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225616023">(Feb 08 2021 at 22:05)</a>:</h4>
<p>I think with shuffles and masks available you can do mostly everything</p>



<a name="225616095"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225616095" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225616095">(Feb 08 2021 at 22:06)</a>:</h4>
<p>Trig is a large outstanding issue but I think it's relatively rarely used</p>



<a name="225616376"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225616376" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225616376">(Feb 08 2021 at 22:08)</a>:</h4>
<p>Also with the rustc PR merged, I think it's stable enough for some level of public consumption?</p>



<a name="225616437"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225616437" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Thom Chiovoloni <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225616437">(Feb 08 2021 at 22:09)</a>:</h4>
<p>For the stuff used for games yeah, plausibly. but in general... there's a lot of data manipulation instructions that are used in multimedia tasks, encoding too. <span class="user-mention" data-user-id="314350">@Henri Sivonen</span> mentioned being interested in porting his utf8 code (which uses packed_simd) to libcore once portable simd is available, and I suspect we couldn't do that as-is (Certainly we couldn't implement the stuff from the "validating UTF-8 in less than 1 instruction per byte" <a href="https://arxiv.org/abs/2010.03090">https://arxiv.org/abs/2010.03090</a>, but I don't think we need to support parity with <em>all</em> intrinsics, and that uses direct hardware intrinsics)</p>
<p>Concretely, IMO we should see what feature parity with packed_simd would look like.</p>



<a name="225616447"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225616447" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225616447">(Feb 08 2021 at 22:09)</a>:</h4>
<blockquote>
<p>entirety of stdsimd stabilization blocked by const_evaluatable_checked</p>
</blockquote>
<p>What part of the const integration are you referring to?</p>



<a name="225616470"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225616470" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Thom Chiovoloni <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225616470">(Feb 08 2021 at 22:09)</a>:</h4>
<p>That said the trig stuff is <em>way</em> more obscure IMO than these operations.</p>



<a name="225616587"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225616587" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225616587">(Feb 08 2021 at 22:10)</a>:</h4>
<p><span class="user-mention" data-user-id="209168">@Thom Chiovoloni</span> if there's a particular set of ops worth prioritizing we can make a list</p>



<a name="225616599"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225616599" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Thom Chiovoloni <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225616599">(Feb 08 2021 at 22:10)</a>:</h4>
<p>Uh, my comment is about being finished after shuffles / masks, not whetehr or not it should be publically available as unstable</p>



<a name="225616781"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225616781" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Thom Chiovoloni <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225616781">(Feb 08 2021 at 22:12)</a>:</h4>
<p>I mean do we even have stuff like packed min/max?</p>



<a name="225616819"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225616819" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225616819">(Feb 08 2021 at 22:12)</a>:</h4>
<p>I wouldn't say that trig stuff is super obscure</p>



<a name="225616823"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225616823" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225616823">(Feb 08 2021 at 22:12)</a>:</h4>
<p><span class="user-mention" data-user-id="388128">@Edmund Cape</span> there's a long saga around this, but <a href="https://github.com/rust-lang/stdsimd/issues/50">https://github.com/rust-lang/stdsimd/issues/50</a> may be the place to start. Basically, the issue is with bounds on const generics leaking into the public API</p>



<a name="225616922"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225616922" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Thom Chiovoloni <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225616922">(Feb 08 2021 at 22:13)</a>:</h4>
<p><span class="user-mention silent" data-user-id="224471">Lokathor</span> <a href="#narrow/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E/near/225616819">said</a>:</p>
<blockquote>
<p>I wouldn't say that trig stuff is super obscure</p>
</blockquote>
<p>I think it's just a very visible thing since its a difference from f32/f64, but almost no cpus support it, and existing simd code won't expect it.</p>



<a name="225616938"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225616938" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225616938">(Feb 08 2021 at 22:13)</a>:</h4>
<p><span class="user-mention" data-user-id="209168">@Thom Chiovoloni</span> <span class="user-mention" data-user-id="224471">@Lokathor</span> my point was really that there's quite a bit you can do with just arithmetic, comparisons and shuffles, not that we are done <span aria-label="grinning" class="emoji emoji-1f600" role="img" title="grinning">:grinning:</span></p>



<a name="225616969"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225616969" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Thom Chiovoloni <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225616969">(Feb 08 2021 at 22:13)</a>:</h4>
<p>I'll agree there</p>



<a name="225617022"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225617022" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225617022">(Feb 08 2021 at 22:14)</a>:</h4>
<p>Yes, I vaguely understand that issue.  However, I also thought it was made moot because <code>[T; CONST]</code> is now stable... No?</p>



<a name="225617056"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225617056" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225617056">(Feb 08 2021 at 22:14)</a>:</h4>
<p>That is stable, but using a const fn in the array length is not</p>



<a name="225617077"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225617077" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225617077">(Feb 08 2021 at 22:14)</a>:</h4>
<p>And has some unfortunate implications currently</p>



<a name="225617156"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225617156" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225617156">(Feb 08 2021 at 22:15)</a>:</h4>
<p>one problem is that if you set the array size too high then things explode in gross error messages, which isn't something people will want to do in practice, but people make typos and error messages should make sense when it happens</p>



<a name="225617310"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225617310" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225617310">(Feb 08 2021 at 22:16)</a>:</h4>
<p>Actually now the error messages have the opposite problem, short and lacking context. If you know what it means you can easily figure it out, but it's very user-hostile</p>



<a name="225617407"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225617407" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225617407">(Feb 08 2021 at 22:17)</a>:</h4>
<p>ah, yeah, i didn't mean that they're long error messages, like some async stuff does, but that the build will fail in a hostile way, yeah</p>



<a name="225617423"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225617423" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225617423">(Feb 08 2021 at 22:17)</a>:</h4>
<p>Is the explosion unacceptable?  I ask because it seems to me that when I try to instantiate a large array on the stack I get an mem overload error.  <br>
So, par for the course?</p>



<a name="225617444"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225617444" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225617444">(Feb 08 2021 at 22:17)</a>:</h4>
<p>"Vector size must be a power of two" isnt the worst message until you can't figure out which vector caused it</p>



<a name="225617621"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225617621" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225617621">(Feb 08 2021 at 22:18)</a>:</h4>
<p>In my opinion it's absolutely acceptable for an unstable feature but should be better</p>



<a name="225617635"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225617635" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225617635">(Feb 08 2021 at 22:18)</a>:</h4>
<p>yeah, the error can end up being somewhat.. uh... "non local" to the actual trigger for the error</p>



<a name="225617746"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225617746" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225617746">(Feb 08 2021 at 22:18)</a>:</h4>
<p>ah, and yeah it'd be fine for Nightly</p>



<a name="225617796"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225617796" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225617796">(Feb 08 2021 at 22:18)</a>:</h4>
<p>but would prevent stabilizing even the simple arithmetic until we can solve it</p>



<a name="225617877"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225617877" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225617877">(Feb 08 2021 at 22:19)</a>:</h4>
<p>I think it's trivially solvable by making it a type of layout error but I'm not sure that's the way to go</p>



<a name="225617966"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225617966" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225617966">(Feb 08 2021 at 22:20)</a>:</h4>
<p>But I think it may be better to ignore rather than drag in const_evaluatable_checked for now</p>



<a name="225618019"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618019" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618019">(Feb 08 2021 at 22:20)</a>:</h4>
<p>Considering that would prevent using rustdoc and also force all users to use an incomplete feature</p>



<a name="225618084"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618084" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618084">(Feb 08 2021 at 22:21)</a>:</h4>
<p>i mean, <em>right now</em>, in the initial phase, it would be fine to literally lock all lane counts to say, 16 or less</p>



<a name="225618096"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618096" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618096">(Feb 08 2021 at 22:21)</a>:</h4>
<p>or 32, or pick any number, i don't care which number too much</p>



<a name="225618121"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618121" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618121">(Feb 08 2021 at 22:21)</a>:</h4>
<p>Right, but how to do that?</p>



<a name="225618171"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618171" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618171">(Feb 08 2021 at 22:22)</a>:</h4>
<p>T-compiler knows, not me XD</p>



<a name="225618175"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618175" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618175">(Feb 08 2021 at 22:22)</a>:</h4>
<p>64 for bytes on avx512, and for SimpleV</p>



<a name="225618202"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618202" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618202">(Feb 08 2021 at 22:22)</a>:</h4>
<p>We could use the LanesUpTo64 or whatever that trait is called, on all vectors</p>



<a name="225618235"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618235" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618235">(Feb 08 2021 at 22:22)</a>:</h4>
<p>I think that <span class="user-mention" data-user-id="125270">@scottmcm</span> would be proud</p>



<a name="225618236"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618236" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618236">(Feb 08 2021 at 22:22)</a>:</h4>
<p>The one added in my mask PR</p>



<a name="225618266"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618266" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618266">(Feb 08 2021 at 22:23)</a>:</h4>
<p>LanesAtMost64</p>



<a name="225618351"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618351" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618351">(Feb 08 2021 at 22:24)</a>:</h4>
<p>wait, we can't just name it <code>LE64</code>? :P (joking)</p>



<a name="225618440"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618440" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618440">(Feb 08 2021 at 22:25)</a>:</h4>
<p>yeah, u64 is fine for now.</p>



<a name="225618566"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618566" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618566">(Feb 08 2021 at 22:26)</a>:</h4>
<p>It would make the API slightly noiser, but that bound should be inferred in most cases anyway</p>



<a name="225618615"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618615" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618615">(Feb 08 2021 at 22:27)</a>:</h4>
<p>Mostly just slightly annoying in the docs and that's it</p>



<a name="225618659"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618659" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618659">(Feb 08 2021 at 22:27)</a>:</h4>
<p>And yeah, I think we're pretty close to pushing this into nightly.</p>



<a name="225618670"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618670" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618670">(Feb 08 2021 at 22:27)</a>:</h4>
<p>Much less annoying than a broken const fn bound</p>



<a name="225618673"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618673" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618673">(Feb 08 2021 at 22:27)</a>:</h4>
<p>so if we just limit lane counts to 64 or less, then things should be sturdy enough for the full crate in Nightly, and <em>arithmetic</em> should be study enough for being the first Stabilization goal?</p>



<a name="225618800"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618800" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618800">(Feb 08 2021 at 22:28)</a>:</h4>
<p>So the min lane width is 1-bit?</p>



<a name="225618831"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618831" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618831">(Feb 08 2021 at 22:28)</a>:</h4>
<p>i think non-mask values have a minimum size of 1 byte per lane</p>



<a name="225618835"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618835" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618835">(Feb 08 2021 at 22:28)</a>:</h4>
<p>It's 8 bits, except for bitmasks which have 1 bit lanes</p>



<a name="225618939"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618939" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618939">(Feb 08 2021 at 22:29)</a>:</h4>
<p><span class="user-mention" data-user-id="224471">@Lokathor</span> Basically yeah, that's more or less what we're expecting. We want to start improving rustc's actual capabilities so that the API compiles better, basically, but from an <strong>API</strong> perspective we're close to being able to ship those.</p>



<a name="225618949"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225618949" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225618949">(Feb 08 2021 at 22:29)</a>:</h4>
<p><span class="user-mention" data-user-id="224471">@Lokathor</span> I think we'll want to be sure that the API is safe to stabilize while being able to remove the LanesAtMost64 trait in the future, but other than that, yes</p>



<a name="225619108"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619108" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619108">(Feb 08 2021 at 22:30)</a>:</h4>
<p>Unfortunately, unlike ArrayAtMost64, which only applied to trait implementations, this applies to the type definition as well</p>



<a name="225619116"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619116" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619116">(Feb 08 2021 at 22:30)</a>:</h4>
<p>And it being a target doesn't mean it has to happen precisely right away or precisely in that order, just as a named goal is all</p>



<a name="225619182"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619182" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619182">(Feb 08 2021 at 22:31)</a>:</h4>
<p><code>core_simd_arithmetic</code> seems fine for our feature flag.</p>



<a name="225619187"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619187" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619187">(Feb 08 2021 at 22:31)</a>:</h4>
<p>so, for <code>LanesAtMost64</code> will that be namable by 3rd party sw, or will that be std-private?</p>



<a name="225619238"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619238" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619238">(Feb 08 2021 at 22:31)</a>:</h4>
<p>So bitmasks have min lane size of 1-bit?  The terminology of lanes to describe bit operations seems a little unusual.</p>



<a name="225619298"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619298" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619298">(Feb 08 2021 at 22:32)</a>:</h4>
<p><span class="user-mention" data-user-id="229517">@Jacob Lifshay</span> I think it will be inherently unstable, and never stabilize, since it will eventually be removed</p>



<a name="225619330"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619330" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619330">(Feb 08 2021 at 22:32)</a>:</h4>
<p>But it will be public until it is removed.</p>



<a name="225619375"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619375" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619375">(Feb 08 2021 at 22:33)</a>:</h4>
<p>(identical to ArrayAtMost64 in that way)</p>



<a name="225619394"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619394" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619394">(Feb 08 2021 at 22:33)</a>:</h4>
<p>some cpus do treat individual bitmask bits as individual lanes, that will happen to some extent in Libre-SOC's cpu</p>



<a name="225619454"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619454" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619454">(Feb 08 2021 at 22:33)</a>:</h4>
<p><span class="user-mention" data-user-id="388128">@Edmund Cape</span>  So, there's "full masks" and "bitmasks". a full mask is a vector with lanes of a certain element size and all the bits in that lane are set to 1 or 0, this is used in NEON and some Intel ISAs. The bitmask is used in some Intel instructions as well, and most notably in the AVX512 instruction set, and a bitmask is basically just a u32 or whatever. <span aria-label="upside down" class="emoji emoji-1f643" role="img" title="upside down">:upside_down:</span></p>



<a name="225619466"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619466" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619466">(Feb 08 2021 at 22:33)</a>:</h4>
<p>It's also roughly equivalent to the k registers in AVX-512</p>



<a name="225619482"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619482" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619482">(Feb 08 2021 at 22:33)</a>:</h4>
<p>Will <code>LanesAtMost64</code> ever be used  to describe a bit-wise operation?</p>



<a name="225619547"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619547" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619547">(Feb 08 2021 at 22:34)</a>:</h4>
<p>Yes, right now that's the only place I have it used</p>



<a name="225619552"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619552" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619552">(Feb 08 2021 at 22:34)</a>:</h4>
<p>often, yes, either shoved into the low/high bits of a SIMD register, in a normal scalar register, or in a special register.</p>



<a name="225619574"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619574" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619574">(Feb 08 2021 at 22:34)</a>:</h4>
<p>e.g. an operation using the bottom bit can finish executing before the top bit is computed thanks to out-of-order execution, similar to Cray-1's vector chaining</p>



<a name="225619636"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619636" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619636">(Feb 08 2021 at 22:35)</a>:</h4>
<p><span class="user-mention" data-user-id="388128">@Edmund Cape</span> so there's two things: a "bitwise operation" such as AND / OR / XOR works on the bit pattern of the SIMD value. <em>separately</em> there's a "bit mask" which is a mask value ("truthy") where only true and false are stored. The minimum required to store true/false is obviously 1 bit each, but there's still some masks that are actually 1 bit each, and some masks that are a full lane width each (eg: masks used with i32x4 would be 32 bits per lane, all bits 1 or all bits 0).</p>



<a name="225619687"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619687" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619687">(Feb 08 2021 at 22:35)</a>:</h4>
<p>there are also a few cpus with masks somewhere between bitmasks and full-lane masks</p>



<a name="225619750"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619750" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619750">(Feb 08 2021 at 22:36)</a>:</h4>
<p>and i like the engineers who invented those even less</p>



<a name="225619816"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619816" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619816">(Feb 08 2021 at 22:37)</a>:</h4>
<p>abstracting over all of these details in a way that is portable and also allows people to, if necessary, do conversions that move from using our API to using architecture intrinsics, is the challenge of our API design and the source of many, many... spirited conversations!</p>



<a name="225619830"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619830" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619830">(Feb 08 2021 at 22:37)</a>:</h4>
<p><span class="user-mention" data-user-id="312331">@Caleb Zulawski</span> the distinction between running a bitwise operation on the register vs the lanes on the register makes sense as you describe it.  That distinction is required to understand where the scope for <code>LanesAtMost64</code> makes sense... this said, maybe it's the inclusion of <code>Lane</code> in <code>LanesAtMost64</code> that's having me ask.</p>



<a name="225619879"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619879" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619879">(Feb 08 2021 at 22:37)</a>:</h4>
<p>Libre-SOC's cpu technically uses either 1-bit per lane masks or 4-bit per lane masks, I just decided that the 4-bit per lane masks won't ever be ABI visible</p>



<a name="225619939"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619939" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619939">(Feb 08 2021 at 22:38)</a>:</h4>
<p>this is a good point in that the trait might as well be named MaxLen64</p>



<a name="225619988"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225619988" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225619988">(Feb 08 2021 at 22:38)</a>:</h4>
<p>Yeah, in the case of bitmasks, it's because the size of the bitmask is related to the number of lanes of the vector the bitmask is compatible with, not something specific about the bitmask itself</p>



<a name="225620080"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620080" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620080">(Feb 08 2021 at 22:39)</a>:</h4>
<p>I think that within reason the api shouldn't shy away from using the term "lane" immediately and often. It simply won't make sense to read much of the documentation without knowing what a lane is, so you should see it a lot and then have a clear glossary that says what it means</p>



<a name="225620081"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620081" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620081">(Feb 08 2021 at 22:39)</a>:</h4>
<p>It's encoded in the type, but doesn't actually change how it's used in-register</p>



<a name="225620186"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620186" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620186">(Feb 08 2021 at 22:40)</a>:</h4>
<p>we could be extra clear that a bitmask and a bitwise operation are not related</p>



<a name="225620239"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620239" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620239">(Feb 08 2021 at 22:40)</a>:</h4>
<p>we can also mention that lane is interchangable with element in the glossary</p>



<a name="225620275"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620275" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620275">(Feb 08 2021 at 22:41)</a>:</h4>
<p>masks (bitmasks or fullmasks) are generally used to merge data from two sources</p>



<a name="225620300"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620300" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620300">(Feb 08 2021 at 22:41)</a>:</h4>
<p>either through a "blend" or a load/store</p>



<a name="225620312"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620312" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620312">(Feb 08 2021 at 22:41)</a>:</h4>
<p>Perhaps it is worth reconsidering splitting masks into their own module so they can be independently documented and grouped together</p>



<a name="225620331"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620331" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620331">(Feb 08 2021 at 22:41)</a>:</h4>
<p>So it's a little clearer they are different from normal simd vectors in some way</p>



<a name="225620336"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620336" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620336">(Feb 08 2021 at 22:41)</a>:</h4>
<p>or in the case of SimpleV, any predicated instruction</p>



<a name="225620344"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620344" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620344">(Feb 08 2021 at 22:41)</a>:</h4>
<p>"yes and"</p>



<a name="225620424"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620424" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620424">(Feb 08 2021 at 22:42)</a>:</h4>
<p>i think they should go in a sub-module with a public use::* in the upper module</p>



<a name="225620425"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620425" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620425">(Feb 08 2021 at 22:42)</a>:</h4>
<p><code>Lane</code> ~ <code>Element</code> makes good sense;  so much so, I'm sure when they diverge...</p>



<a name="225620433"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620433" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620433">(Feb 08 2021 at 22:42)</a>:</h4>
<p>so that importing isn't complicated, but docs place them separately</p>



<a name="225620521"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620521" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620521">(Feb 08 2021 at 22:43)</a>:</h4>
<p>personally i generally think of the element as being the type of each lane (i32, u32, f64, etc), but that could just be me</p>



<a name="225620580"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620580" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620580">(Feb 08 2021 at 22:44)</a>:</h4>
<p>oh, I just call that element type</p>



<a name="225620657"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620657" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620657">(Feb 08 2021 at 22:44)</a>:</h4>
<p>Is there anywhere else in std that has a public module with a reexport? (Other than the prelude)</p>



<a name="225620678"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620678" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620678">(Feb 08 2021 at 22:45)</a>:</h4>
<p>The scope of my comment was only in terms of count.  I'm not sure that anywhere in the transformation/computation I would have more elements than lanes... Do you know what I mean?</p>



<a name="225620689"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620689" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620689">(Feb 08 2021 at 22:45)</a>:</h4>
<p>std::collections::HashMap</p>



<a name="225620734"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620734" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620734">(Feb 08 2021 at 22:45)</a>:</h4>
<p><span class="user-mention" data-user-id="388128">@Edmund Cape</span> yes, i follow. in that sense they're equivalent terms.</p>



<a name="225620788"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620788" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620788">(Feb 08 2021 at 22:46)</a>:</h4>
<p>also std re-exports core::arch</p>



<a name="225620837"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620837" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620837">(Feb 08 2021 at 22:46)</a>:</h4>
<p>Re bitmasks: In the terminology, does it imply that they operate on the register or lanes?</p>



<a name="225620870"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620870" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620870">(Feb 08 2021 at 22:46)</a>:</h4>
<p>lanes are purely logical</p>



<a name="225620905"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620905" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620905">(Feb 08 2021 at 22:47)</a>:</h4>
<p>they're just a way to understand what parts of a register are being affected</p>



<a name="225620914"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620914" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620914">(Feb 08 2021 at 22:47)</a>:</h4>
<p>operations are always on registers</p>



<a name="225620991"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225620991" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225620991">(Feb 08 2021 at 22:48)</a>:</h4>
<p>(or parts of registers, etc, many cpu types they're not all the same, yada yada)</p>



<a name="225621057"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621057" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621057">(Feb 08 2021 at 22:48)</a>:</h4>
<p>Ah.  My understanding of a bitmask is that it operates on a lane.  So, I will make as many bitmasks as number of lanes.  Is this an unusual way to see it?</p>



<a name="225621077"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621077" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621077">(Feb 08 2021 at 22:49)</a>:</h4>
<p>ah, that would be incorrect</p>



<a name="225621119"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621119" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621119">(Feb 08 2021 at 22:49)</a>:</h4>
<p>one bitmask is used for an entire operation, and each lane of the bitmask affects a lane of the operation being performed.</p>



<a name="225621237"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621237" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621237">(Feb 08 2021 at 22:50)</a>:</h4>
<p>the way I see it is a bitmask is really a vector of bools (with different representation), they have to have the same lane count as other bool/non-bool vectors they're used with</p>



<a name="225621239"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621239" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621239">(Feb 08 2021 at 22:50)</a>:</h4>
<p>most operations are <code>op(a,b)</code>, and masked operations are <code>op(a,b,control_mask)</code></p>



<a name="225621263"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621263" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621263">(Feb 08 2021 at 22:50)</a>:</h4>
<p>Ok.  Where I got that impression was from Intel (all good if not a norm).  When describing an operation an a 512-bit vector:</p>
<blockquote>
<p>Add 16-bit masks in a and b, and store the result in k.</p>
</blockquote>



<a name="225621309"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621309" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621309">(Feb 08 2021 at 22:51)</a>:</h4>
<p>i'm not sure where the larger quote is from so i'm not clear on the context</p>



<a name="225621335"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621335" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621335">(Feb 08 2021 at 22:51)</a>:</h4>
<p>but just from that, "the result" (singular) is being stored in <code>k</code>, so just one mask is produced</p>



<a name="225621349"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621349" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621349">(Feb 08 2021 at 22:51)</a>:</h4>
<p><code>__mmask16 _kadd_mask16 (__mmask16 a, __mmask16 b)</code><br>
Synopsis</p>
<div class="codehilite"><pre><span></span><code>#include &lt;immintrin.h&gt;
Instruction: kaddw k, k, k
CPUID Flags: AVX512DQ
Description
Add 16-bit masks in a and b, and store the result in k.
Operation
k[15:0] := a[15:0] + b[15:0]
k[MAX:16] := 0
</code></pre></div>



<a name="225621404"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621404" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621404">(Feb 08 2021 at 22:52)</a>:</h4>
<p>hmm, that sounds like an operation on 16-bit values, not 512-bit values. regardless, the vector has 16 lanes</p>



<a name="225621492"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621492" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621492">(Feb 08 2021 at 22:53)</a>:</h4>
<p>yeah, for whatever reason, this lets you add together two 16-bit mask values. so similar to <code>u16 + u16</code>, and you get 16 bits of output. Not sure <em>why</em> you'd to that, but you apparently can</p>



<a name="225621536"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621536" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621536">(Feb 08 2021 at 22:53)</a>:</h4>
<p>&lt;Intel&gt; "look"</p>



<a name="225621542"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621542" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621542">(Feb 08 2021 at 22:53)</a>:</h4>
<p>probably because they could...</p>



<a name="225621565"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621565" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Mario Carneiro <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621565">(Feb 08 2021 at 22:53)</a>:</h4>
<p>But then what's up with <code>k[MAX:16] := 0</code>?</p>



<a name="225621567"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621567" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621567">(Feb 08 2021 at 22:53)</a>:</h4>
<p>&lt;Intel&gt; "we already had to implement an adder for other functions"</p>



<a name="225621615"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621615" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621615">(Feb 08 2021 at 22:54)</a>:</h4>
<p>lol</p>



<a name="225621622"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621622" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621622">(Feb 08 2021 at 22:54)</a>:</h4>
<p><span class="user-mention" data-user-id="271719">@Mario Carneiro</span> "covering their butts against the future". masks might be bigger in the future, hither bits are 0 by this operation</p>



<a name="225621644"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621644" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Mario Carneiro <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621644">(Feb 08 2021 at 22:54)</a>:</h4>
<p>oh, <code>MAX=16</code> here?</p>



<a name="225621646"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621646" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621646">(Feb 08 2021 at 22:54)</a>:</h4>
<p>yes.</p>



<a name="225621684"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621684" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621684">(Feb 08 2021 at 22:55)</a>:</h4>
<p>this is basically describing from the tallest bit down to the 16th bit</p>



<a name="225621691"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621691" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621691">(Feb 08 2021 at 22:55)</a>:</h4>
<p>max = 16 <em>now</em>, but considering that avx 256-bit registers are actually just bigger sse 128-bit registers, it's sane to say "those registers might be bigger 10 years from now"</p>



<a name="225621694"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621694" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621694">(Feb 08 2021 at 22:55)</a>:</h4>
<p><span class="user-mention silent" data-user-id="271719">Mario Carneiro</span> <a href="#narrow/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E/near/225621565">said</a>:</p>
<blockquote>
<p>But then what's up with <code>k[MAX:16] := 0</code>?</p>
</blockquote>
<p>that means that the instruction works on 16-bits and if the k register is bigger than 16-bits the upper bits are zeroed</p>



<a name="225621700"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621700" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621700">(Feb 08 2021 at 22:55)</a>:</h4>
<p>tol'lest</p>



<a name="225621717"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621717" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621717">(Feb 08 2021 at 22:55)</a>:</h4>
<p>aren't there already k registers that can have 64 bits</p>



<a name="225621723"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621723" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621723">(Feb 08 2021 at 22:55)</a>:</h4>
<p>In fact, masks are already bigger in the future, they are 64 bits if you have AVX-512BW</p>



<a name="225621728"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621728" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621728">(Feb 08 2021 at 22:55)</a>:</h4>
<p>Yeah, that</p>



<a name="225621731"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621731" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621731">(Feb 08 2021 at 22:55)</a>:</h4>
<p>yeah</p>



<a name="225621746"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621746" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621746">(Feb 08 2021 at 22:55)</a>:</h4>
<p>If useful here is the link to the [because they can intrinsics] (<a href="https://software.intel.com/sites/landingpage/IntrinsicsGuide/#!=undefined&amp;expand=2125,2124,2123,413,402,305,304,2121,85,3536,3508,203,2030,2033,3206,3210&amp;cats=Mask">https://software.intel.com/sites/landingpage/IntrinsicsGuide/#!=undefined&amp;expand=2125,2124,2123,413,402,305,304,2121,85,3536,3508,203,2030,2033,3206,3210&amp;cats=Mask</a>) :))</p>



<a name="225621815"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621815" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621815">(Feb 08 2021 at 22:56)</a>:</h4>
<p>well, "the future" of whenever that op code's spec was written</p>



<a name="225621827"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621827" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621827">(Feb 08 2021 at 22:56)</a>:</h4>
<p>for all i know that's a 5 year old instruction or something</p>



<a name="225621932"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225621932" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225621932">(Feb 08 2021 at 22:57)</a>:</h4>
<p>When I think about masks in context of a vector, I think about a mask for each lane/element in my vector.</p>



<a name="225622023"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225622023" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225622023">(Feb 08 2021 at 22:58)</a>:</h4>
<p>yes but they're bit-packed, that's why they're a bitmask. So a mask to cover 16 lanes, bitpacked, it a u16</p>



<a name="225622066"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225622066" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225622066">(Feb 08 2021 at 22:58)</a>:</h4>
<p>and bit 0 of the u16 affects lane 0 of the operation, bit 1 affects lane 1, etc etc</p>



<a name="225622082"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225622082" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225622082">(Feb 08 2021 at 22:58)</a>:</h4>
<p>Without that unified view of lane ~ element that would imply that I'm somehow able to do a ~horizontal <br>
 computation.  Or at least, not performing the same transformation on each element.</p>



<a name="225622166"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225622166" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225622166">(Feb 08 2021 at 22:59)</a>:</h4>
<p>i can't speak to that. as i said, element is not a term i normally use at all when talking about simd, so whatever people wanna say "element" means is up to them</p>



<a name="225622167"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225622167" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225622167">(Feb 08 2021 at 22:59)</a>:</h4>
<p><span class="user-mention silent" data-user-id="224471">Lokathor</span> <a href="#narrow/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E/near/225618235">said</a>:</p>
<blockquote>
<p>I think that <span class="user-mention silent" data-user-id="125270">scottmcm</span> would be proud</p>
</blockquote>
<p>Who'd have thought this would be my lasting legacy...</p>



<a name="225622288"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225622288" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225622288">(Feb 08 2021 at 23:00)</a>:</h4>
<p>anyways!<br>
it seems we have reached the "discussing minutiae of the avx512 API" part of the meeting! :^)<br>
So I think basically we're aiming at</p>
<ol start="0">
<li>audit our API for necessities</li>
<li>maybe "static shuffles" (interleave, etc.)?</li>
<li>initially launching to the <code>core_simd_arithmetic</code> feature flag</li>
</ol>



<a name="225622290"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225622290" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225622290">(Feb 08 2021 at 23:00)</a>:</h4>
<p>lanes/elements on two vectors don't have to be the same size to have the same vector element count -- exactly what's happening with bitmasks</p>



<a name="225622619"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225622619" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225622619">(Feb 08 2021 at 23:03)</a>:</h4>
<p><span class="user-mention" data-user-id="281757">@Jubilee</span> sounds good to me!</p>



<a name="225622694"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225622694" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225622694">(Feb 08 2021 at 23:04)</a>:</h4>
<p>Agree.  Likely a by-product of vector vs scalar. I'm only talking about the construction of a bitmask for a specific vector.  Vectors have several lanes.  In this context, lanes ~ elements is ok the way I'm thinking about it.  During the construction, I think about a bitmask, repeat the value (bitmask value) to load the vector, apply.</p>



<a name="225623178"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225623178" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225623178">(Feb 08 2021 at 23:08)</a>:</h4>
<p>Good night everyone.</p>



<a name="225623362"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225623362" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225623362">(Feb 08 2021 at 23:10)</a>:</h4>
<p>hmm, for me, a bitmask is just a vector where each lane is 1 bit. it can be created by a vector compare instruction, which sets the corresponding bit for each output lane to the comparison result for each input lane. the bitmask can then be used in a predicated instruction, where the instruction writes to the output register's N-bit wide lanes only where the corresponding 1-bit-wide lanes in the bitmask are a 1</p>



<a name="225623376"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225623376" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225623376">(Feb 08 2021 at 23:10)</a>:</h4>
<p>Huzzah. ^_^ Nightly Soon™<br>
<a href="https://www.youtube.com/watch?v=AD6hV6XSgFo">https://www.youtube.com/watch?v=AD6hV6XSgFo</a></p>
<div class="youtube-video message_inline_image"><a data-id="AD6hV6XSgFo" href="https://www.youtube.com/watch?v=AD6hV6XSgFo"><img src="https://i.ytimg.com/vi/AD6hV6XSgFo/default.jpg"></a></div>



<a name="225629820"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/2021-02-08%20Meeting./near/225629820" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Edmund Cape <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/2021-02-08.20Meeting.2E.html#225629820">(Feb 09 2021 at 00:28)</a>:</h4>
<p><span class="user-mention" data-user-id="229517">@Jacob Lifshay</span> Fair enough.  It's something I'll keep an eye out for to make sure I'm not injecting a meaning that isn't universal. Thank you for that.</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>